<?php

class Pedido_ConsultaController extends Zend_Controller_ActionAquiles {

    public function init() {
        parent::init();
        $this->view->title = 'Pedido';
    }

    public function indexAction() {
        $familias = '1,2,3,4';
        $this->view->mesas = Application_Model_Mesa::getInstance()->getList();
        $lista = Application_Model_Produto::getInstance()->getProdutosByFamily($familias);
        $this->view->produtos = $lista;
    }

    public function salvaAction() {

        $idProdutos = $_POST['produto'];
        $quantidades = $_POST['quantidade'];
        $mesa = $_POST['mesa'];
        $pedido = null;
        $resp = new Util_Function_JsonResponse();
        if (isset($mesa)) {
            $pedido = Application_Model_Pedido::getInstance()->getPedidosByReserva(Zend_Date::now()->get('Y/M/d'), $mesa);
            if (!isset($pedido) || empty($pedido)) {
                $reserva = Application_Model_Reserva::getInstance()->getByDateMesa(Zend_Date::now()->get('Y/M/d'), $mesa);

                if (!isset($reserva) || empty($reserva)) {
                    $resp->addErro("Não existe nenhuma reserva para essa mesa.");
                    echo Zend_Json::encode(array("erros" => $resp->getErros()), Zend_Json::TYPE_OBJECT);
                    die();
                }

                $pedido['idreservas'] = $reserva[0]['idreservas'];
                $pedido['pago'] = 0;

                $pedido['idpedido'] = Application_Model_Pedido::getInstance()->insert($pedido);
            }else{
                $pedido = $pedido[0];
            }

            if (isset($idProdutos) && is_array($idProdutos) && !empty($idProdutos)) {
                for ($index = 0; $index < count($idProdutos); $index++) {
                   $qnt= Application_Model_Produto::getInstance()->getQuantidadeById($idProdutos[$index]);
                   if($quantidades[$index] > $qnt['estoque']){
                       $produto = Application_Model_Produto::getInstance()->getByIdRow($idProdutos[$index]);
                       $resp->addErro("Não existe estoque suficiente para o produto: " . $produto['produto']);
                   }
                }
                
                if(is_array($resp->getErros()) && count($resp->getErros()) > 0){
                    echo Zend_Json::encode(array("erros" => $resp->getErros()), Zend_Json::TYPE_OBJECT);
                    die();
                }
                
                for ($index = 0; $index < count($idProdutos); $index++) {
                    $produto['quantidade'] = $quantidades[$index];
                    $produto['idproduto'] = $idProdutos[$index];
                    $produto['atendido'] = 0;
                    $produto['pedido'] = $pedido['idpedido'];
                    Application_Model_ItemPedido::getInstance()->insert($produto);
                    
                    $prod = Application_Model_Produto::getInstance()->getByIdRow($idProdutos[$index]);
                    $prod['estoque'] = $prod['estoque'] - $quantidades[$index];
                    $prod =$prod->toArray();
                    Application_Model_Produto::getInstance()->atualizaQuantidade($prod);
                }
            }
        }
        $resp->addErro("Itens enviados com sucesso.");

        echo Zend_Json::encode(array("msg" => $resp->getErros()), Zend_Json::TYPE_OBJECT);
        die();
    }

    public function saveAction() {
        $model = Application_Model_Reserva::getInstance();
        $model->insert($this->getReserva());

        return $this->_helper->redirector('index', 'reserva', 'reserva');
    }

    public function validaAction() {
        $resp = new Util_Function_JsonResponse();
        echo Zend_Json::encode(array("erros" => $resp->getErros()), Zend_Json::TYPE_OBJECT);
        die();
    }

    private function getReserva() {
        $filter = new Zend_Filter_Date();
        $reserva['nome'] = $_POST['nome'];
        $reserva['telefone'] = $_POST['telefone'];
        $reserva['data'] = $filter->filter($_POST['dia']);
        $reserva['hora'] = $_POST['hora'];
        $reserva['mesa'] = $_POST['mesa'];
        return $reserva;
    }

}